package com.zenithmind.coding.pojo.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;

/**
 * 代码提交DTO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "代码提交DTO")
public class SubmissionDTO {

    /**
     * 问题ID
     */
    @NotBlank(message = "问题ID不能为空")
    @Schema(description = "问题ID", example = "1234567890")
    private String problemId;

    /**
     * 编程语言
     */
    @NotBlank(message = "编程语言不能为空")
    @Schema(description = "编程语言", example = "java")
    private String language;

    /**
     * 源代码
     */
    @NotBlank(message = "源代码不能为空")
    @Size(min = 1, max = 65535, message = "源代码长度必须在1-65535之间")
    @Schema(description = "源代码", example = "public class Solution {\n    public int[] twoSum(int[] nums, int target) {\n        // 实现代码\n    }\n}")
    private String sourceCode;

    /**
     * 是否公开（0-私有，1-公开）
     */
    @Schema(description = "是否公开（0-私有，1-公开）", example = "0")
    private Integer isPublic = 0;

    /**
     * 是否分享（0-否，1-是）
     */
    @Schema(description = "是否分享（0-否，1-是）", example = "0")
    private Integer isShared = 0;

    /**
     * 提交来源（1-网页，2-API，3-IDE插件）
     */
    @Schema(description = "提交来源（1-网页，2-API，3-IDE插件）", example = "1")
    private Integer submitSource = 1;

    /**
     * 竞赛ID（如果是竞赛提交）
     */
    @Schema(description = "竞赛ID（如果是竞赛提交）")
    private String contestId;

    /**
     * 作业ID（如果是作业提交）
     */
    @Schema(description = "作业ID（如果是作业提交）")
    private String assignmentId;
}
